#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <malloc.h>

  ////Definition for singly-linked list.
  //struct ListNode
  //{
  //   int val;
  //    struct ListNode *next;
  //};
 

//
//struct ListNode* removeElements(struct ListNode* head, int val) {
//    struct ListNode* prev = NULL, * cur = head;
//    while (cur)
//    {
//        if (cur->val == val)
//        {
//
//            if (head == cur)
//            {
//                head = head->next;
//                free(cur);
//                cur = head;
//            }
//            else
//            {
//                prev->next = cur->next;
//                free(cur);
//                cur = prev->next;
//            }
//        }
//        else
//        {
//            prev = cur;
//            cur = cur->next;
//        }
//    }
//    return head;
//}

//
//int main()
//{
//    struct ListNode* n1 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* n2 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* n3 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* n4 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    n1->val = 1;
//    n2->val = 2;
//    n3->val = 7;
//    n4->val = 10;
//    n1->next = n2;
//    n2->next = n3;
//    n3->next = n4;
//    n4->next = NULL;
//    struct ListNode* head = removeElements(n1, 7);
//
//    return 0;
//}
//
//
//
